Skip to content

fix(media): preview host files and stream videos across clients - #9023

Merged
juliusmarminge merged 17 commits into
mainfrom
t3code/explain-chat-media-paths
Sep 1, 2026
Merged

fix(media): preview host files and stream videos across clients#9023
juliusmarminge merged 17 commits into
mainfrom
t3code/explain-chat-media-paths

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Sep 1, 2026

Copy link
Copy Markdown
Member

What changed

Agent-referenced images and videos outside the workspace could not be previewed, selecting MP4s in Files tried to read them as text, and web attachment previews downloaded entire videos into blobs.

  • Preview supported media from Markdown links, reference links, recognized inline-code paths, image/video embeds, and viewed-image work logs. Absolute paths refer to the environment host; relative paths resolve against the thread workspace or worktree.

  • Show paused video previews with an initial frame, native controls, and expansion on web and mobile. Web chat embeds and file viewers share MediaVideoPlayer; the other web previews share first-frame preparation. Mobile reuses the bounded native-thumbnail cache and extraction queue. Inline playback begins only after Play, while opened viewers load without autoplay.

  • Use the same filmstrip artwork for supported video formats in web and mobile file chips and file lists. Extension detection follows the shared video MIME map.

  • Play videos in both file viewers without text reads or text preloads. Web video attachments pass signed URLs directly to the player so the existing Range/206 route handles buffering. Workspace refreshes wait for active playback to pause; ordinary signed-URL renewal preserves paused position.

  • Authorize local media with expiring signed URLs bound to the canonical path and device/inode identity. Validate a regular media file, then stream from the same guarded descriptor. Refresh descriptor metadata before setting response lengths and ranges. Do not copy previews into attachment storage. Removed, moved, or atomically replaced files invalidate old URLs. Mutable host videos omit cache validators and use private, no-store, while ordinary byte ranges still return 206.

  • Render the shared web viewer through a body portal so clipped Markdown containers cannot contain it. Failed direct HTTP(S) and protocol-relative previews retain Open original navigation; generated host-media URLs are not exposed as original links. Protocol-relative media links open the viewer on both clients, with native clients explicitly using HTTPS.

  • Retry, workspace refresh, and mobile Save/share request fresh capabilities. Signed-URL renewal does not reset a loaded player's position.

  • Keep existing workspace HTML/PDF/SVG restrictions and explicit-download behavior. Enable streaming through the Electron protocol.

  • Preserve original source references in shared media actions across inline previews, expanded previews, and file viewers. Web images support save/copy; video downloads use browser controls. Mobile reuses native sharing.

Markdown source → rendered UI

These captures use a synthetic thread and files on the environment host, including files outside its workspace.

Image and video embeds

Raw Markdown source → rendered UI below
## Media outside the workspace

![Outside-workspace image](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-image.png)

![Outside-workspace video](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4)

Both previews use the original files. Video playback starts only when requested.
Web · Chromium Mobile · Android
Web chat shows the outside-workspace image and an initial video frame while paused Android chat shows the outside-workspace image and a cached native video thumbnail while paused

Both screenshots show paused previews. The recordings show playback followed by expansion into a paused viewer.

Recordings: web 28s and Android 22s
Web · Chromium Mobile · Android
Open web recording Open Android recording
Play web recording · 28s Play Android recording · 22s
Before: empty web video preview

With preload disabled, no frame appeared until Play:

Before: the web inline video has no preview frame
Expanded, paused video viewers
Web · Chromium Mobile · Android
Web expanded viewer shows an initial frame and remains paused Android expanded viewer shows an initial frame and remains paused

Links, reference links, and inline-code paths

Raw Markdown source → rendered UI below
## Open media references

- [Image link](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-image.png)
- [Video link](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4)
- [Reference video link][recording]
- Image path: `/tmp/t3-media-verification-2hud6jgq/outside-media/outside-image.png`
- Video path: `/tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4`
- [File URL image](file:///tmp/t3-media-verification-2hud6jgq/outside-media/outside-image.png)
- [Missing image](/tmp/t3-media-verification-2hud6jgq/outside-media/missing-image.png)

[recording]: /tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4

### Workspace-relative image

![Workspace image](media/workspace-image.png)

### Code stays code

```text
Recorded evidence here: /tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4
```
Web · Chromium Mobile · Android
Web media references use image and filmstrip file-chip icons; fenced code remains code Android media references use image and filmstrip file-chip icons; fenced code remains code
Before: video chips used a generic file icon Before: MP4 file chips have a generic document icon
Opening an image reference and reporting a removed file
Web · Chromium Mobile · Android
Web image viewer opened from a media reference Android image viewer opened from a media reference
Web · Chromium Mobile · Android
Web reports that the selected image is unavailable Android reports an unavailable image without suggesting an environment reconnect

Remote previews that are actually web pages

The following Markdown file intentionally links to HTML responses with media-looking paths. The shared web viewer covers the whole window and offers Open original when decoding fails. It never navigates automatically.

Raw Markdown source → rendered UI below
# Remote preview fallback

These links intentionally return an HTML page, not image or video bytes.

[Image page](http://localhost:8057/not-an-image.png)

[Video page](http://localhost:8057/not-a-video.mp4)
Image page Video page
Failed remote image preview offers Open original Failed remote video preview offers Open original

File viewers: paused frames and streaming playback

Before: reported web file-viewer failure

This is the reported failure for an MP4 opened in the web file viewer. The after captures use separate synthetic fixtures.

Before: opening an MP4 reports Failed to read workspace file
Web · Chromium Mobile · Android
Web file viewer shows the initial frame of a 90-second MP4 before playback Android file viewer shows the initial frame of media/workspace-video.mp4 before playback

Web opens a 90-second, 45 MB test-pattern video. Android opens the five-second media/workspace-video.mp4; its reused artwork says "Outside-workspace video", but this file is inside the workspace.

Recordings: web 31s and Android 25s
Web · Chromium Mobile · Android
Open web recording Open Android recording
Play web recording · 31s Play Android recording · 25s

The Chromium pass showed a paused initial frame at 0.1 seconds with only 3.01 seconds buffered from the 90-second video. Metadata/frame loading used Range: bytes=0- and a later Range: bytes=458752-, both answered with 206 Partial Content. Playback and a seek to the middle worked through the same native player. The app does not fetch a playback blob.

Preview loading now deliberately reads video data before Play. Web preloads metadata only near the viewport for inline videos; mobile gates native thumbnail extraction on visible chat rows. Preload is a browser hint, not a strict byte limit. No server-generated poster files or imported video copies are needed.

Review regression evidence

Authored dimensions, unavailable media, and protocol-relative links

The deliberately unavailable URLs return HTML to exercise decode failures. Retry keeps the fallback usable, Open original retains the authored URL, and image/video dialogs share the same error card. The sized video remains paused at its initial frame.

Raw Markdown source → rendered UI below
# Video preview recovery

## Authored dimensions

<img src="/tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4" alt="Sized video" width="320" height="180">

## Remote video unavailable

![Remote video](http://localhost:8057/not-a-video.mp4)

## Protocol-relative video unavailable

![Protocol-relative video](//localhost:8057/not-a-video.mp4)

Both unavailable examples intentionally return HTML. Retry or open the original page.

## Protocol-relative media link

[Open protocol-relative video](//localhost:8057/not-a-video.mp4)

## Remote image unavailable

![Remote image](http://localhost:8057/not-an-image.png)

Web Markdown shows the authored video dimensions, retry and original-link actions, and protocol-relative media link

Image and video error dialogs
Image Video
Image decode failure retains the shared dialog frame and Open original Video decode failure retains the shared dialog frame and Open original

Android file viewer, playback, and explicit sharing

The latest Android pass opens a video in Files, expands the paused preview, plays it to the end, and invokes Save or share video. Only that explicit share operation downloads a client-side copy. No share target was selected. Returning from the share sheet preserves the final frame without a loading spinner.

File preview Native share sheet
Android file viewer shows a video thumbnail with play and expand controls Android's native share sheet receives workspace-video.mp4

Play Android file viewer, playback, and sharing recording · 29s · Paused expanded preview · Ended state after sharing

Workspace links open the file viewer

Workspace image and video chips now open the normal file viewer on web and mobile. Out-of-workspace media links and the expand controls on inline embeds keep their media previews. The demo now labels deliberately absent files as expected failures.

Raw Markdown source
[Open the larger video](media/large-streaming-check.mp4)
Before: workspace chip opened the expanded modal After: workspace chip opens a file-viewer tab
Before: clicking a workspace video chip opened the expanded media modal After: the same workspace video opens and plays in a file-viewer tab

Watch the web link-to-file-viewer recording

Android opens the workspace video chip in the file viewer and plays the video there

Watch the Android link-to-file-viewer recording

Verified the 90-second video plays in both clients. The web file viewer uses the signed HTTP streaming URL, not a blob; a range request returned 206 with Content-Range: bytes 1048576-1048703/45066088. The routing follow-up passed 158 existing focused tests, web/mobile typechecks, and scoped lint and formatting. No new test dependencies or DOM harnesses were added.

Source paths and media actions

Previews retain the authored path or URL separately from their playback URL. Web hover tooltips show that reference, and right-click menus copy it. Workspace media can copy its relative path or open the file viewer. Images can be saved or copied to the clipboard. Mobile uses long-press and overflow menus with native Save or share.

Raw Markdown source for the previews below
![Outside-workspace image](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-image.png)
![Outside-workspace video](/tmp/t3-media-verification-2hud6jgq/outside-media/outside-video.mp4)

![Workspace image](media/workspace-image.png)
![Workspace video](media/workspace-video.mp4)
Web right-click Android long-press
Outside-workspace image has source-copy, save, and clipboard actions Workspace image menu includes full and relative paths, file viewer, and native sharing

Web hover tooltip showing the original path

Before: previews did not expose source actions Reported preview before source tooltips and media actions
Expanded previews and file viewers
Web expanded preview Android expanded preview
Expanded image shares the source actions and can open the file viewer Expanded Android image has a selectable source caption and native action menu
Web file viewer Android file viewer
Image file viewer offers source-copy and image actions on the image itself Android file viewer reuses path-copy and native sharing actions

Watch web source actions, clipboard paste, expansion, and file-viewer navigation · 45s · Watch Android expanded actions and file-viewer navigation · 18s · Android native video share sheet

Video downloads use the browser

Removed the web context menu's fetch-based Save video action. The native player keeps its Download control; source-copy and file-viewer actions remain in the context menu. No application-side video fetch is needed for downloading. An undecodable video offers Open in browser, while remote failures retain Open original. Existing local blob attachments use a native download link.

Raw Markdown source for the external video
![Embedded web recording](https://gh-file-drop-api-prod-mi5fy3sowv63ufte.pinglabs.workers.dev/f/3df4ab52b599357e/web-chat-first-frame.mp4)
Source action Browser's native controls
External video context menu keeps Copy URL without Save video The native video player still offers Download
Failed video recovery

The intentionally invalid MP4 exercises decode failure in the file viewer. The browser link opens the original streamed bytes without a fetch-and-blob download.

Before After
Failed file-viewer video had only Retry Failed file-viewer video offers Open in browser alongside Retry

Verified actual clipboard paste for the full host path, authored external URL, and copied image. The saved image matches the original SHA-256. Android shared the original filename through the native share sheet, and expanded previews returned to the file viewer. Source actions never copy generated playback capabilities. Empty file-viewer padding no longer opens the image menu. Focused tests, scoped typechecks, lint, and formatting passed; no UI/DOM harnesses were added.

Verification

  • Focused tests passed after removing the DOM/mock-native harnesses and presentation/wiring checks. No new test dependencies remain.
  • Scoped web, mobile, and server typechecks were rerun. Shared, desktop, contracts, and client-runtime checks passed during the earlier PR verification.
  • Targeted lint, formatting, and git diff --check passed.
  • Verified host-video headers and playback in Chromium after the conditional-range fix. A bytes=0-31 request returned 206 with exactly 32 bytes; unverifiable If-Range correctly returned 200.
  • Actual Chromium and Android emulator passes covered chat previews, filmstrip icons, playback, expansion, missing files, and MP4 file viewers. Chromium additionally covered failed remote image/video links and the body-level dialog portal. Host-media previews did not populate attachment storage.
  • Kept regression coverage for canonical file identity and symlink races, in-place edits and replacement, range bounds and descriptor cleanup, filename-versus-URL decoding, and first-frame seek guards. UI behavior is covered by the recorded Chromium and Android passes above.
  • iOS and Electron were not manually exercised. No repo-wide checks were run. Evidence is hosted externally; no PR-only screenshots or recordings are committed.

Follow-ups from the rendering audit

  • Replace the legacy Android attachment modal's download-before-playback path. The new Android Markdown and file-viewer paths stream; the legacy attachment path is unchanged.
  • Reuse chat media resolution/rendering in mobile Markdown-file previews. This PR adds playback for selected video files, not media embeds inside those Markdown files.

Built with Codex in T3 Code.


Note

High Risk
Changes signed asset authorization, symlink-safe file open, and video HTTP semantics (security-sensitive), plus broad client routing from markdown/workspace media to new preview flows.

Overview
Adds end-to-end host media preview so images and videos referenced in chat, workspace files, and markdown can play without reading MP4s as text or buffering whole files into blobs.

Server introduces a media-file asset with signed URLs tied to canonical path plus device/inode identity. Responses stream from a guarded descriptor with byte-range (206) support, private, no-store for videos, and invalidation when files move or are replaced atomically.

Mobile gains inline and full-screen MediaVideoPlayer, shared useMediaActions (copy path/URL, open file viewer, native share), workspace video preview in Files, and richer markdown handling (protocol-relative URLs, UNC file: paths, path-shaped inline code, video file icons). Asset URLs can be refreshed on retry/share without resetting playback position; list viewability gates thumbnail work.

Desktop widens CSP media-src to http:/https: and enables stream: true on the custom scheme for streaming playback.

Web adds useAssetUrlRefresh for re-minting capabilities after file changes (aligned with mobile).

Reviewed by Cursor Bugbot for commit 0977bfc. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add media-file asset type with signed streaming URLs and video preview across web, mobile, and desktop

  • Introduces a media-file asset resource in packages/contracts/src/assets.ts; the server issues identity-bound tokens (device/inode) and serves guarded byte-range streams via openMediaFile in assetFileResponse.
  • Adds full-screen and inline video players (MediaVideoPlayer on web, MediaVideoPlayer on mobile) with URL re-signing on retry, viewport-aware preloading, and expand-to-modal support.
  • Updates markdown rendering on both clients to classify and render videos inline from workspace paths and remote URLs, with media action menus (copy path/URL, share, open file) via MediaActions and useMediaActions.
  • Replaces blob-based video download with signed URL streaming in ChatView.tsx and ExpandedImageDialog.tsx; removes loadVideoPreviewUrl and downloadVideoPreview.
  • Fixes protocol-relative URL handling in resolveExternalWebLinkHost, normalizeNativeMarkdownUrl, and resolveMarkdownFileLinkTarget.
  • Desktop CSP in ElectronProtocol.ts now allows http:/https: in media-src and enables stream: true for the custom scheme.
  • Risk: asset tokens for media-file bind to device/inode identity; if a file is replaced or truncated in place, resolveAsset rejects the token and the client must call useRefreshAssetUrl/useAssetUrlRefresh to re-sign. The old workspace-file resource tag for images is replaced by media-file across presentation.ts and test expectations, which may break out-of-tree consumers expecting _tag: "workspace-file".

Macroscope summarized 0977bfc.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL 1,000+ changed lines (additions + deletions). 📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. labels Sep 1, 2026
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.3 KiB 13.3 KiB +7 B (+0.1%) 15.1 KiB
Codex Thread snapshot wire 6.9 KiB 6.9 KiB −5 B (−0.1%) 7.3 KiB
Codex Live turn WebSocket wire 6.4 KiB 6.4 KiB +12 B (+0.2%) 7.8 KiB
Codex Live turn WebSocket decoded 55.6 KiB 55.6 KiB 0 B (0.0%) 66.4 KiB
Codex Live turn messages 10 10 0 (0.0%) 21
Claude Total thread wire 13.3 KiB 13.3 KiB −53 B (−0.4%) 15.1 KiB
Claude Thread snapshot wire 6.9 KiB 6.9 KiB −3 B (−0.0%) 7.3 KiB
Claude Live turn WebSocket wire 6.4 KiB 6.4 KiB −50 B (−0.8%) 7.8 KiB
Claude Live turn WebSocket decoded 56.4 KiB 56.3 KiB −88 B (−0.2%) 66.4 KiB
Claude Live turn messages 10 8 −2 (−20.0%) 21

Baseline: 60cef47 · PR result: 0977bfc · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 109.4 KiB
  • Claude decoded thread snapshot: 110.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Comment thread apps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/server/src/assets/AssetAccess.ts
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx
Comment thread apps/web/src/components/ChatMarkdown.tsx
@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR adds a substantial cross-platform media-preview capability and changes host-file authorization, signed asset serving, HTTP streaming, and default file-preview behavior. Its broad runtime and sensitive file-access scope, together with new static-analysis suppressions, warrants human review.

You can add or adjust custom eligibility rules. Learn more.

Reuse first-frame preparation on web and the native thumbnail cache on mobile. Keep streaming playback and use a shared filmstrip icon for video references.

Portal media dialogs, preserve failed remote destinations, and refresh idle file previews without interrupting active playback.
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/mobile/src/components/MediaVideoPreviewModal.tsx Outdated
Comment thread apps/web/src/components/chat/ExpandedImagePreview.tsx Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/server/src/assets/AssetAccess.ts
Comment thread apps/server/src/assets/MediaFile.ts Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx
Comment thread apps/web/src/components/chat/ExpandedImageDialog.tsx Outdated
Comment thread apps/server/src/http.ts Outdated
Comment thread apps/web/src/components/ChatMarkdown.tsx Outdated
Comment thread apps/server/src/http.ts Outdated
Comment thread apps/web/src/components/media/MediaVideoPlayer.tsx
@juliusmarminge

Copy link
Copy Markdown
Member Author

@macroscope Please rerun the UI Consistency check on d84a5319081457abf8f42fa69e6bb2a017df32e4 after considering the test-scope decision. The sole finding is acknowledged and resolved as an intentional maintainer-requested coverage tradeoff, not a UI defect. No check configuration has been changed.

The PR now includes fresh before/after screenshots and Chromium/Android recordings of workspace chips opening the file viewer, with the raw Markdown source beside the rendered evidence. CI tests and typechecks pass; real Chromium playback uses the signed HTTP URL and returns 206 for byte ranges.

@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Manual reviews triggered for commit d84a531:

All prior checks · these links stay valid even if you push more commits.

@macroscopeapp

macroscopeapp Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Just FYI for future @mentions, I'm Macroscope-App, not Macroscope.

Rerun triggered. Results will be posted as check runs.

Comment thread apps/server/src/assets/MediaFile.ts
Comment thread apps/mobile/modules/t3-markdown-text/src/markdownLinks.ts
Comment thread apps/server/src/assets/MediaFile.ts Outdated
Comment thread apps/web/src/components/chat/ExpandedImageDialog.tsx Outdated
@juliusmarminge
juliusmarminge merged commit beae214 into main Sep 1, 2026
28 checks passed
@juliusmarminge
juliusmarminge deleted the t3code/explain-chat-media-paths branch September 1, 2026 23:05
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…merge drops

Merge origin/main (04efa79) into fork main; 70 conflicted files resolved
keep-both per docs/internals/mt-fork-merges.md. Notable upstream work:
server-side thread settlement (pingdotgg#8600), remote Claude model manifest (pingdotgg#9084)
+ Fable 5.1 (pingdotgg#9078), resumable usage transcript scans (pingdotgg#9024), media
previews across clients (pingdotgg#9023), CLI open-in-desktop (pingdotgg#8824), quit-shortcut
confirmation (pingdotgg#9076), PR list filters (pingdotgg#8809), settings search (pingdotgg#8831).

Fork wiring kept: goals/queued turns/thread_send in decider +
ProviderCommandReactor, TurnWatchdogReactor beside ThreadSettlementReactor,
MT Auto router, usage sources (grok/cursor/opencode), voice, tabs, upstream
PR shelf, Chrome multitab, computer use, environment retargeting.
Superseded by upstream: client-side canSettle (queued-turn rule folded into
ThreadSettlementPolicy), mobile autoSettleOnMerge preference.

Pre-existing fork breakage fixed in passing: preload.ts lost the
clientPlatform const (dropped definition, kept call site); ChatMarkdown's
remark memo lacked remarkCodexDirectives so Codex file chips and artifact
cards never rendered; Claude adapter still checked attachment.type === "pdf"
after the 08-29 "file" model; Codex adapter carried a dead PDF-reject branch
and a fork-only test asserting it; composerProviderState availability check
now uses the alias-aware resolveSelectableModel.

Verified: personal-verify-fork-features.sh OK; typecheck clean for
contracts, shared, client-runtime, server, web, desktop, mobile; test
suites green except two pre-existing fork failures (shared shell PATH
ordering, CodexAdapter child-model lifecycle timeout — both fail on the
backup branch too).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J764QWzvXpEUTgDPn5ahfo
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 2, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 4, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 5, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 5, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 7, 2026
## What's Changed
* fix(web): preserve theme when toggling advanced colors by @StiensWout in https://github.com/pingdotgg/t3code/pull/8500
* fix(chat): keep latest command live between messages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9098
* fix(media): preview host files and stream videos across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9023
* feat(cli): open projects in the running desktop app by @t3dotgg in https://github.com/pingdotgg/t3code/pull/8824
* chore: vouch six repeat contributors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9131
* chore: delete dead code, unused deps, and duplicate helpers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9129
* fix(web): mute routine notices and update actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9063
* perf(provider): bound persisted session lookups by @nateEc in https://github.com/pingdotgg/t3code/pull/8909
* fix(claude): skills picked from the composer now run by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9128
* fix(web): stop highlighter freezes and worker spin by using the Oniguruma WASM engine by @LetZico in https://github.com/pingdotgg/t3code/pull/8360
* perf: make streaming projection and activity appends incremental by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9152
* fix(server): bound orchestration replay payloads by @rcawston in https://github.com/pingdotgg/t3code/pull/8992
* perf(client-runtime): keep turn and checkpoint refs stable while streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9145
* perf(clients): lease sidebar status by visibility by @StiensWout in https://github.com/pingdotgg/t3code/pull/9052
* fix(desktop): show newest changes in nightly previews by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9138
* fix(settings): sync auto-settle and other shared preferences across environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9147
* fix(server): prevent accidental service downgrades by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5302
* fix(server): keep attachments until the command commits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/7941
* fix(claude): preview images read from the workspace by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9119
* fix(web): keep generated muted foreground dimmer than entered text by @flamboh in https://github.com/pingdotgg/t3code/pull/9113
* fix(clients): stop repeating expanded commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9120
* fix(grok): health check, model selection, and stop all work against the real CLI by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9154
* perf(web): halve the cold-start bundle by splitting Clerk and cold routes by @StiensWout in https://github.com/pingdotgg/t3code/pull/9058
* feat(desktop): update the desktop app on remote Macs from the Update button by @t3dotgg in https://github.com/pingdotgg/t3code/pull/6554
* test(server): measure shell, second client, and reconnect transfer by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9157
* fix(web): project default model works on the hosted app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9142
* fix(web): darken neutral control surfaces by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9064
* fix(web): preserve panel state across workspace refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8968
* feat(files): open markdown, HTML, and PDF files outside the workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9140
* feat(web): render HTML and PDF files in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9143
* fix(web): compact project settings actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9160
* fix(web): browse folders from file breadcrumbs by @404khai in https://github.com/pingdotgg/t3code/pull/8910
* feat(pull-requests): copy provider checkout commands by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9086
* fix(web): hide build pill in narrow sidebars by @flamboh in https://github.com/pingdotgg/t3code/pull/9159
* feat(web): cite assistant responses with inline citations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9146
* fix(provider): drop removed custom models from the model picker by @StiensWout in https://github.com/pingdotgg/t3code/pull/9075
* fix(web): align composer notices and stash by @Bil0000 in https://github.com/pingdotgg/t3code/pull/8890
* fix(web): label keybinding condition removal actions by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/8664
* fix(contracts): accept legacy pull request checkout results by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/8238
* fix(desktop): hold-to-quit no longer gets stuck by @saphid in https://github.com/pingdotgg/t3code/pull/9141
* chore: remove unused code and brittle tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9150
* fix(chat): improve tool group summaries and scrolling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9106
* feat(web): copy the full error report from the error page by @StiensWout in https://github.com/pingdotgg/t3code/pull/9166
* fix(chat): replace failed tools with thinking by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9165
* fix(chat): align failed task progress test by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9172
* fix(web): open PR toast actions in app by @eimexdev in https://github.com/pingdotgg/t3code/pull/9006
* fix(desktop): check artifact build prerequisites by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/8975
* fix(server): discover project skills for Codex and OpenCode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/8778
* fix(pull-requests): expand code tab diffs by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9174
* chore: bump vendored GhosttyKit and update terminal integration by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9155
* fix(web): copying a code block no longer copies triple backticks by @ipanasenko in https://github.com/pingdotgg/t3code/pull/8448
* fix(models): restore sticky new-thread selections by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9164
* fix(web): model info button opens its details on click by @StiensWout in https://github.com/pingdotgg/t3code/pull/9177
* fix(desktop): skip cached monitor compiler check by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9184
* fix(web): avoid stale file writes on close by @yashranaway in https://github.com/pingdotgg/t3code/pull/8630
* fix(server): bound OpenCode version probes by @yashranaway in https://github.com/pingdotgg/t3code/pull/8750
* fix(server): allow large Azure DevOps PR lists by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8572
* fix(server): allow local-only worktree bases by @yashranaway in https://github.com/pingdotgg/t3code/pull/8751
* fix(web): remove projects with archived threads by @none23 in https://github.com/pingdotgg/t3code/pull/8798
* feat(web): make context window indicator opt-in by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9190
* fix(connect): refresh relay credentials before expiry by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9178
* fix(pull-requests): reuse github api reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9176
* fix(server): stop titling linked PR threads from local git history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9191
* feat(updates): continue active threads across server restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9167
* fix(mobile): prevent message and composer overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9195
* fix(web): preserve composer draft during worktree setup by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9197
* fix(web): prevent two-digit list markers from being clipped by @G-R3 in https://github.com/pingdotgg/t3code/pull/9101
* fix(server): discover project skills for Claude by @anirudhsama in https://github.com/pingdotgg/t3code/pull/9210
* feat(web): redesign provider editor and models list by @StiensWout in https://github.com/pingdotgg/t3code/pull/8508
* fix(web): prevent connection rows from wrapping during removal by @MatthewFeroz in https://github.com/pingdotgg/t3code/pull/8706
* fix(pull-requests): align checkout control with author by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9196
* fix(release): pin patched expo-sharing version by @willsheldon in https://github.com/pingdotgg/t3code/pull/9250
* chore(mobile): update Expo Sharing to 57.0.17 by @StiensWout in https://github.com/pingdotgg/t3code/pull/9248
* fix(web): hide deleted providers with prototype keys by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8337
* feat(mobile): long-press file references for path and open actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9258
* fix(desktop): exclude opposite macOS pty prebuilds by @extoci in https://github.com/pingdotgg/t3code/pull/9240
* feat(web): add copy path button to diff headers by @ipanasenko in https://github.com/pingdotgg/t3code/pull/2403
* fix(server): subscribe before provider settings watcher by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9271
* fix(mobile): show filled filter icon on Android when filters are active by @none23 in https://github.com/pingdotgg/t3code/pull/9217
* fix(chat): show single tool calls without summaries by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9267
* fix(web): warn when shared settings have no target environment by @imabdulazeez in https://github.com/pingdotgg/t3code/pull/9207
* fix(web): confirm closing agent-controlled browsers by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9272
* feat(desktop): browser profiles for the preview browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7254
* refactor(shared): move the node:sqlite Effect SQL client into shared by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7272
* feat(web): add opt-in panel animations by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8830
* feat(projects): automatically pull clean default branches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9277
* fix(web): show pull request state icons in tabs by @flamboh in https://github.com/pingdotgg/t3code/pull/9112
* feat(providers): add context compaction across harnesses by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8808
* feat(web): add proactive panels by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9276
* fix(web): unify control sizing across settings pages by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9281
* fix(web): offer browser profiles from the empty-panel launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9279
* Revert "feat(providers): add context compaction across harnesses" by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9284
* fix(web): show scroll-to-end as soon as the last message slips under the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9280
* fix(cursor): honor auto and full access modes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9283
* fix(desktop): detect installed Spectre libs for Windows builds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9285
* fix(pull-requests): missing features & better behaviour by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9188
* fix(providers): discover workspace skills everywhere by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9180
* fix(server): preserve automatic settlement timestamps by @eimexdev in https://github.com/pingdotgg/t3code/pull/9254
* fix(opencode): show Reasoning selector for OpenCode models by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9287
* feat(web): preview document attachments in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9292
* chore(ci): narrow the UI consistency check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9297
* chore(ci): only run check-run agents on vouched contributors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9298
* fix(web): stop remounting markdown on every activity delta by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9306
* fix(pull-requests): keep cached PR chrome on reopen by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9294
* feat(environments): draw each environment as the machine it runs on by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9299
* feat(web): apply and remove labels from the pull request tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9313
* fix(sidebar): collapse settled and snoozed shelves by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9314
* refactor(media): unify file and media previews across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9253
* fix(chat): keep live tool labels in present tense by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9316
* chore: audit lint directives and move plugin allowlists into config by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9300
* chore(ci): narrow the Effect conventions check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9321
* refactor(mobile): style plain views with Uniwind classes instead of the theme bridge by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9322
* fix(dev): share dev servers on the loopback Vite actually binds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9324
* fix(web): line up the titlebar wordmark label and version pill by @tristanmanchester in https://github.com/pingdotgg/t3code/pull/9255
* fix(web): make the diff layout toggle a persisted setting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9326
* chore: dedupe lightningcss and tailwind node bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9331
* chore: upgrade vite-plus to 0.3.0 by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9327
* feat(web): add a file tree to the diff panel and pull request code tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9330
* feat(web): add PageUp/PageDown chat navigation by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9315
* fix(web): collapse PR header actions to icons when narrow by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9334
* fix(web): resolve Vite sourcemap and supports warnings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9343
* feat(web): choose whether links open in the default browser or in T3 Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9339
* fix(web): add press feedback to buttons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9349
* feat(web): add customizable project icons by @saphid in https://github.com/pingdotgg/t3code/pull/9137
* fix(mobile): stop indented code overflowing Android chat bubbles by @Adamulek123 in https://github.com/pingdotgg/t3code/pull/9347
* fix(web): let the pull request list use wide screens by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9351
* feat: display native app and browser icons in work logs by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9093
* fix(web): collapse oldest pull request comments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9323
* fix(pull-requests): shared state + not settling? by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9332
* fix(web): stop usage summary requests reporting slow RPCs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9358
* feat(web): suggest ssh hosts in a dropdown under the host field by @flamboh in https://github.com/pingdotgg/t3code/pull/9171
* feat(web): mod+w closes the active right panel tab before the window by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9363
* test(web): remove static markup-only component tests by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9364
* fix(environments): draw the machine icon everywhere an environment is named by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9365
* fix(web): settled sidebar rows use the project fallback icon by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9366
* fix(web): match project icon chooser button sizes by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9368
* fix(mobile): pressed and disabled styles no longer apply unconditionally by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9355
* fix(mobile): size expanded tool groups correctly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9359
* fix(web): collapse the resting composer by @chrisdeeming in https://github.com/pingdotgg/t3code/pull/7855
* fix(web): keep trailing tool groups out of "Worked for" accordion by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9384
* feat(marketing): put named-developer quotes on the landing page by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9385
* fix(claude): expand slash commands when a message has attachments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9122
* fix(web): stop the resting composer layout loop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9393
* fix(web): render assistant images inline in chat by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9126
* feat(providers): add Google Antigravity via the official ACP agent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9348
* fix(mobile): show an error instead of an endless preview spinner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9123
* fix(usage): price new models without waiting a day for the rate table by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9202
* fix(web): unlock the composer when preview capture fails by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9127
* fix(antigravity): refresh the model manifest so older Gemini models fold as legacy by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9397
* perf(ci): reuse dependency checks in release builds by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9399
* fix(web): send cited messages with Cmd+Enter by @extoci in https://github.com/pingdotgg/t3code/pull/9307
* fix(web): preserve explicit preview navigation URLs by @nateEc in https://github.com/pingdotgg/t3code/pull/8902
* fix(web): prevent loading ssh environments from overriding navigation by @flamboh in https://github.com/pingdotgg/t3code/pull/9168
* fix(mobile): skip unsupported shared settings targets by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9381
* fix(web): avoid duplicate Antigravity install status by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9419
* fix(composer): mute fast icon when collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9451
* fix(web): unify skeleton loading animations on one pulse by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9448
* fix(web): prioritize authored pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9453
* fix(web): make project icons the default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9457
* fix(server): reuse pr state when settling threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9459
* fix(web): keep agent images collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9460
* fix(web): banner buttons no longer expand the resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9452
* fix(web): stop clipping the traits chevron on long Codex effort labels by @zortos293 in https://github.com/pingdotgg/t3code/pull/9433
* fix(web): make right panel tabs easier to scroll by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9461
* fix(web): render transparent previews on white by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/9463
* fix(mobile): show loading and syncing in the working pill by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9466
* fix(server): keep a/ and b/ prefixes in rendered git patches by @Mnigos in https://github.com/pingdotgg/t3code/pull/9438
* fix(server): full-access OpenCode threads no longer ask for approvals by @shivamhwp in https://github.com/pingdotgg/t3code/pull/9282
* fix(web): reuse pull request list data while loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9467
* feat(web): let users turn off composer collapse on blur and scroll by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9469
* fix(web): move workflow approval beside checks by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9465
* fix(desktop): refresh generated annotation styles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9488
* fix(web): let the PR reviewer and label search boxes take keystrokes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9479
* fix(web): dont collapse composer when interacting with bottom row by @extoci in https://github.com/pingdotgg/t3code/pull/9490
* fix(desktop): restore second-press quit fallback by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9485
* fix(web): keep opencode icon hollow in collapsed composer by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9492
* fix(web): keep agent browser preview visible by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9484
* fix(mobile): keep the machine glyph next to the environment label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9486
* fix(mobile): let back swipe pop from horizontal scroll edges by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9493
* fix(antigravity): discover legacy workspace skills by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9410
* fix(mobile): resolve Antigravity provider icon and normalize driver matching by @Invictine in https://github.com/pingdotgg/t3code/pull/9495
* fix(antigravity): forward Google sign-in URLs from browser helper by @WellyngtonF in https://github.com/pingdotgg/t3code/pull/9425
* feat(desktop): import browser cookies into a profile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7255
* feat(desktop): import from Chrome, Edge, Brave, Vivaldi, Opera, Arc and Firefox by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7260
* feat(desktop): resolve Chromium cookie keys on Linux by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7261
* fix(antigravity): allow slow runtime startup during setup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9510
* fix(antigravity): keep model choices up to date by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9511
* fix(antigravity): handle native sign-in URLs on stderr by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9514
* fix(antigravity): update managed runtime to 1.1.1 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9509
* fix(desktop): address the browser import review left over from the stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9516
* feat(antigravity): show subagent calls and results by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9515
* fix(web): let paste expand a resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9498
* fix(web): keep the composer open while selecting timeline text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9499
* fix(web): return focus to the composer after closing a media preview by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9513
* fix(server): keep events during thread subscription startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9521
* chore: forward issue/PR/discussion events to Cursor hygiene by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9518
* fix(auth): keep pairing credentials out of access read models by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9523
* chore: drop comment events from Cursor hygiene forwarder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9527
* feat(codex): support async questions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9512
* fix(web): keep right panel controls clickable by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9517
* feat(usage): show Codex and Claude subscription limits on a Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9507
* feat(web): reorganize settings pages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9354
* fix(server): settle branch threads immediately on pull request merge by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9528
* fix(server): back off relay client restarts after rapid exits by @derektrimm in https://github.com/pingdotgg/t3code/pull/8788
* fix(codex): accept rate limit errors on thread resume by @nateEc in https://github.com/pingdotgg/t3code/pull/8897
* fix(desktop): preview CDP sessions no longer hard-crash the app by @sethwebster in https://github.com/pingdotgg/t3code/pull/9068
* Fix worktree removal timing out on large install trees by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3902
* fix(web): settle the resting composer layout with a pixel of slack by @matheustimbo in https://github.com/pingdotgg/t3code/pull/9482
* fix(web): keep automatic project icons consistent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9535
* fix(server): include SQLite conditions in persistence errors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9536
* fix(dev): keep shared dev reloads and hot updates working by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9543
* feat(providers): add context compaction command by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9293
* fix(mobile): keep store screenshots free of system banners and show dictation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9548
* fix(web): restore composer controls as space becomes available by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9539
* fix(web): measure collapsed model labels at their visible width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9540
* fix(web): close composer menus when their controls hide by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9541
* fix(web): thread error banner no longer shifts the chat by @flamboh in https://github.com/pingdotgg/t3code/pull/9473
* fix(server): reveal normalized paths in File Explorer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9551
* feat(marketing): fresh screenshot and floating marks on the homepage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9547
* feat(usage): redeem Codex reset credits from the Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9534
* fix(server): find newly opened pull requests after agent turns by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9125
* ci: add on-demand Windows test workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9538
* fix(web): simplify expanded tool details by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9549
* fix(web): keep the last message visible when the resting composer expands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9553
* test(web): fix flaky startup and Tailwind tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9558
* fix(web): keep codex restart responses continuous by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9560
* fix(web): make settings sidebar sub-section buttons full width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9562
* fix(web): render settings sidebar immediately by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9563
* chore: vouch august contributors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9557
* fix(web): stabilize right panel transitions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9554
* fix: better shell syntax handling for labels by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9371
* fix(web): align the sidebar wordmark by baseline by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9578
* fix(antigravity): keep subagent batches active after launch by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9579
* fix(mobile): render workspace images in markdown file previews by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8769
* fix(usage): deduplicate CLI proxy subscription accounts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9584
* fix(web): bound disconnected send toasts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9592
* fix(desktop): restore panel titlebar interactions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9591
* fix(connect): refresh authorization without disconnecting by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9582
* fix(web): show context meter in compact composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/9430
* fix(pull-requests): refresh data after thread turns by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9496
* fix(web): render draft PRs in gray by @extoci in https://github.com/pingdotgg/t3code/pull/9537
* refactor(web): move usage provider controls to settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9599
* fix: show idle subagent batches without completion marks by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9616
* fix(web): group image views like other tool calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9597
* fix: preserve tool icons on failed calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9606
* fix(connect): diagnose incomplete headless server setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9602
* fix(web): keep command palette above composer menus by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9613
* fix(web): snooze menu no longer overlaps thread details by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9601
* fix(web): match composer pull request state icons by @flamboh in https://github.com/pingdotgg/t3code/pull/9375
* fix(server): load OpenCode workspace skills via SDK to avoid 64KB CLI pipe truncation by @BarryHenryJr in https://github.com/pingdotgg/t3code/pull/9585
* fix(web): mute sidebar branch name to match worktree icon by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9622
* fix(web,mobile): fold context compaction under settled turn folds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9623
* feat(mobile): make chat text selectable on Android by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8779
* fix(web): toggle a single stashed prompt with Cmd+S by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9644
* fix(server): prevent duplicate desktop clients after restart by @seeb1337 in https://github.com/pingdotgg/t3code/pull/6305
* fix(web): resume Antigravity threads without repeated sign-in by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9647
* feat(mobile): paste the phone clipboard into the terminal by @lnieuwenhuis in https://github.com/pingdotgg/t3code/pull/9199
* feat(web): show which sidebar threads hold an unsent draft by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9658
* fix(server): unblock OpenCode approvals and stop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9653
* fix(desktop): quit immediately on a second shortcut press by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9657
* fix(server): update Claude Agent SDK to 0.3.260 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9135
* perf(server): stop loading message bodies for thread summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9662
* perf(web): speed up terminal snapshots by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9663
* fix(web): show machine icons in the environment picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9668
* perf(mobile): bound diff syntax highlighting work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9673
* perf(web): keep Markdown mounted during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9677
* perf(mobile): skip unused legacy list work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9679
* perf(marketing): serve images at their display size by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9682
* perf(server): cache and stream static web assets by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9669
* perf(server): batch projector cursor writes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9671
* perf(server): stop retaining unused OpenCode tool history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9684
* perf(mobile): reuse chat feed rows during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9688
* perf(server): omit repeated OpenCode progress logs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9689
* perf(clients): avoid waiting to read cached relay tokens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9691
* perf(mobile): reuse diff rows during comment edits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9693
* perf(web): defer composer draft serialization by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9695
* feat(server): measure provider turn token usage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9132
* perf(marketing): stop continuous homepage motion by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9697
* perf(server): avoid full patches for checkpoint summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9694
* perf(web): defer diff workers until a code view opens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9692
* perf(marketing): serve website fonts locally by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9701
* perf(server): stop rebuilding terminal history per chunk by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9703
* perf(server): use one query for buffered provider events by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9706
* perf(relay): avoid repeated activity decoding by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9708
* perf(web): stop continuous chat status animations by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9709
* fix(mobile): preserve saved work after storage read failures by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9710
* perf(web): stop replaying terminal buffers on rollover by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9707
* feat(web): preview pull request links by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9631
* perf(client): reduce thread-list update work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9716
* fix(server): settle inactive threads with open PRs by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9610
* fix(server): bound slow-client event buffers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9715
* test(server): allow either valid file-search match by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9720
* fix(web): match provider settings layout for disconnected devices by @flamboh in https://github.com/pingdotgg/t3code/pull/9619
* fix(web): keep the slash menu above the composer when vertical space is short by @Mnigos in https://github.com/pingdotgg/t3code/pull/9625
* fix(mobile): remove provider setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9721
* perf(web): stop rendering hidden terminals by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9718
* fix(mobile): read file-backed image drafts before enabling them by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9713
* perf(server): replay only the selected thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9726
* fix(web): mute composer helper text by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/9654
* feat(web): unpin threads from the sidebar multi-select menu by @gsimone in https://github.com/pingdotgg/t3code/pull/9651
* perf(web): reuse timeline rows while text streams by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9725
* fix(relay): bound stalled push requests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9734
* perf(server): stop caching unused OpenCode tool parts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9738
* fix(web): fold single trailing activity by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9739
* fix(web): show project settings for new threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9743
* perf(mobile): bound the parsed review cache by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9749
* perf(web): avoid repeated terminal metadata scans by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9747
* perf(server): bound terminal history by bytes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9748
* feat(web): link pull request authors to profiles by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9627
* fix(web): refine server update notice by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9744
* perf(client): stop thread streams when unused by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9740
* perf(mobile): defer file preview highlighter startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9752
* perf(server): skip history reads for metadata commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9758
* perf(web): defer image URL requests for thread history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9760
* fix(models): make GPT-6-Astra current by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9762
* fix(web): stop empty diffs replacing pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9753
* fix(sidebar): mute background working threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9759
* fix(web): reset automatic pull to default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9763
* fix(web): restore file comment focus in editable preview by @ShpetimA in https://github.com/pingdotgg/t3code/pull/9061
* docs: keep internal guides focused on architecture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9755
* docs: focus user guides on features and workflows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9756
* fix(web): stop panel motion during navigation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9766
* fix(web): open composer selectors below controls by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9767
* perf(server): skip unused Linux process detail reads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9768
* fix(server): remove retired Codex models after refresh by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9773
* test: stop path and platform tests depending on the host OS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9564
* test(server): skip posix executable fixtures on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9565
* test: skip symlink fixtures where the host cannot create symlinks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9566
* test(server): run fake provider CLIs through a Node stub on every host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9567
* test(desktop): make path fixtures and timeouts host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9568
* fix(server): tolerate the missing directory fsync on Windows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9569
* test(server): pin git config for fixtures and compare native realpaths by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9570
* test: skip POSIX mode-bit assertions on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9571
* test(server): keep provider fixture directories host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9572
* test: resolve the Windows temp directory to its long name by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9573
* test(server): run the Antigravity install harness for the host platform by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9574
* fix(server): canonicalise media paths the same way their callers do by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9575
* test(server): make Windows path and async fixtures deterministic by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9576
* fix(server): refuse symlinked theme files on Windows too by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9580
* test(scripts): keep Windows packaging checks host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9589
* fix(contracts): include tool.denied in runtime event types by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9770
* feat(mobile): split the usage page into Usage and Limits tabs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9775
* fix(web): restore the running tool label shine by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9777
* fix(web): align provider controls with machine tabs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9769
* docs(web): document panel motion during navigation by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9778
* feat(usage): support custom model prices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9774
* fix(web): center pull request link previews by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9794
* fix: address usage limits and merge settlement regressions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9784
* fix(web): give toggle thumbs consistent inset spacing by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9805
* fix(web): use segmented controls for mode switches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9781
* fix(server): recover opted-in threads after machine restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9803
* fix(web): simplify changed files into a persistent folder tree by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9821
* feat: add custom model names and option descriptors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9807
* fix(cursor): discover symlinked skills as package boundaries by @EzraBuild in https://github.com/pingdotgg/t3code/pull/9420
* fix(ssh): exec managed servers without npm wrappers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9843
* fix(server): detect nested Git workspaces for checkpoints by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9842
* fix(web): keep worktree origin preference visible by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9846
* fix(web): smooth settings sidebar transitions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9811
* feat(web): highlight visible settings sections by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9812
* fix(web): keep the sidebar project filter across navigation by @Mnigos in https://github.com/pingdotgg/t3code/pull/9416
* fix(server): surface Claude safety model fallback notices instead of dropping them by @darahaas15 in https://github.com/pingdotgg/t3code/pull/8853
* fix(web): reload saved colors when reopening the theme editor by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9847
* feat(desktop): import cookies from Safari by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7262
* fix(web): respect case in POSIX file links by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/9309
* fix(server): surface a missing workspace folder instead of a spawn error by @kakismash in https://github.com/pingdotgg/t3code/pull/5040
* fix: stop favicon requests for private link hosts on web and mobile by @fe-franco in https://github.com/pingdotgg/t3code/pull/5838
* fix(server): preserve native provider executable paths during updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9850
* fix(web): restore composer expansion after tool calls by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9782
* fix(client): explain possible network blocking for T3 Connect by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9783
* fix(desktop): isolate preview keyboard shortcuts from the host by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9840
* fix(prs): reuse GitHub data and defer optional reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9835
* perf(shared): skip duplicate PATH entries and per-probe tracing by @jadeva in https://github.com/pingdotgg/t3code/pull/9618
* fix(web): preserve focus and prioritize picker shortcuts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9795
* fix(skills): support names beginning with digits by @amiralibg in https://github.com/pingdotgg/t3code/pull/9244
* fix(server): advertise truecolor in the integrated terminal by @shubhxho in https://github.com/pingdotgg/t3code/pull/7680
* fix(claude): surface usage-limit pauses in the thread by @vitalyiegorov in https://github.com/pingdotgg/t3code/pull/7165
* fix: restore UX after performance improvements by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9799
* fix(codex): show what a file-change approval will change by @walid-baharwal in https://github.com/pingdotgg/t3code/pull/8669
* fix(ci): add fallback Ubuntu package mirrors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9864
* fix(web): copy text over plain HTTP by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/8023
* fix(server): dismiss native questions when their turn ends by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9851
* fix(server): quote copied native provider update commands by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9856
* fix(release): install the correct Windows Spectre component by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9859
* fix(web): show retained runtime diagnostics in the work log by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9870
* fix(web): make sidebar project actions reachable by keyboard and screen reader by @akj in https://github.com/pingdotgg/t3code/pull/5521
* fix(preview): bound automation waits and screenshot captures by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4685
* fix(web): render and filter usage as environments respond by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9860
* feat(web): edit usage prices across selected environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9861
* fix(mobile): keep usage tabs below the header when switching by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9876
* fix(connect): refresh HTTP credentials without reconnecting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9594
* fix(web): keep file autosaves active after effect replay by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9878
* fix(web): prioritize open panel pull request when copying by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9877
* fix(cli): resolve projects with missing workspace directories by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9885
* fix(web): sort equally merge-ready pull requests by diff size by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9887
* fix(chat): show hours for long runs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9894
* fix(server): only run provider updates through the installer that owns the binary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9325
* fix(web): discard stale highlights after file edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9902
* feat(web): recall sent prompts with the up arrow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9173
* fix(server): keep mise-owned npm packages manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9927
* fix(settings): share restart continuation across environments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9933
* fix(server): capture turn checkpoints after all edits finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9841
* fix(web): load file grammar before enabling edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9947
* fix(web): deduplicate PR project filter choices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9948
* test(web): keep provider field readers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9952
* test(mobile): keep composer selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9953
* test(client-runtime): keep scoped key implementation private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9955
* fix(web): reveal reselected diff files by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9951
* refactor(web): remove obsolete changed-files preview helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9956
* fix(web): give the browser keybinding notice breathing room by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9964
* chore: configure Knip workspace audits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9958
* refactor(web): prune unused UI and provider code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9959
* chore(mobile): remove obsolete widget wiring script by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9960
* chore: remove redundant root tooling dependencies by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9961
* ci: reject unused files and dependencies with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9962
* test(contracts): keep driver default lookup private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9968
* test(server): remove Azure permissions constant snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9973
* refactor(shared): remove unused viewport formatters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9970
* refactor(mobile): remove unused provider option summary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9971
* refactor(client-runtime): remove unused connection phase message by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9972
* refactor(mobile): remove unused layout calculations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9974
* refactor(client-runtime): remove unused file position predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9976
* refactor(mobile): remove unused font size steppers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9975
* test(server): cover thread lookup through command invariants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9978
* test(server): remove provider equality wrapper fixture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9979
* test(server): assert the dispatched welcome thread model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9980
* refactor(desktop): remove unused keyring remediation text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9981
* refactor(desktop): remove test-only Electron error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9982
* refactor(web): remove unused pull request state label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9984
* perf(web): keep timeline row reuse engaged while text streams by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9909
* fix(web): reset markdown widgets when the previewed file changes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9910
* fix(mobile): keep highlighting review diffs after a long line by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9911
* fix(marketing): align the endorsement carousel with its heading by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9912
* fix(client): keep warm thread resumes live instead of flashing sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9913
* test(server): remove authorization prompt snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9985
* test(server): remove static OAuth page snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9986
* test(server): remove provider label identity assertion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9987
* test(server): consolidate agent activity opt-in coverage by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9988
* refactor(shared): remove unused preview URL predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9989
* refactor(shared): remove unused mention path serializer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9990
* refactor(shared): remove retired PATH capture parser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9991
* refactor(client-runtime): remove unused subagent selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9992
* refactor(web): test the live usage column builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9993
* refactor(web): remove unused aspect ratio reconciler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9994
* refactor(web): remove obsolete cloud listing helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9995
* test(web): remove composer control style snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9996
* test(web): keep the preview profile label helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9997
* test(server): cover raw OpenCode deltas through the adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9977
* refactor(web): remove obsolete pull request link opener by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9983
* test(relay): keep the stage slug helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9998
* refactor(mobile): keep project selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9999
* refactor(mobile): keep review default ID helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10000
* refactor(mobile): remove unused native style constants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10001
* refactor(mobile): test terminal palettes through public theme API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10002
* refactor(mobile): remove unused file tree walkers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10003
* refactor(shared): keep persisted settings helpers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10004
* test(mobile): remove mocked UUID shape assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10006
* refactor(mobile): test final connection status presentation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10007
* test(web): keep pull request menu items private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10016
* refactor(shared): test favicon selection through public API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10005
* refactor(server): remove test-only pricing normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10017
* refactor(web): remove unused desktop update visibility helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10014
* refactor(web): remove obsolete provider update helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10015
* refactor(web): remove unused terminal context preview formatter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10009
* refactor(web): test environment-scoped draft promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10010
* fix(web): retain wrapped row heights during edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10018
* refactor(shared): remove unused Clerk hostname predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10008
* refactor(tailscale): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10011
* ci: reject unused tailscale exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10012
* fix(web): keep chat media at a stable size while it loads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9938
* refactor(server): keep manifest age parsing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10028
* refactor(mobile): remove unused awareness relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10029
* refactor(server): remove unused startup heartbeat launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10030
* refactor(shared): keep search ranking comparator private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10031
* refactor(server): keep telemetry identity errors private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10032
* refactor(mobile): test composer persistence through the live decoder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10033
* refactor(web): remove unused sidebar selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10034
* refactor(server): keep Cursor fallback models private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10038
* refactor(web): remove unused xterm link range helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10040
* refactor(mobile): remove obsolete review list builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10039
* test(server): remove duplicate VCS error constructor checks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10042
* refactor(mobile): keep appearance calculations private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10043
* refactor(web): remove unused sidebar menu action by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10044
* refactor(web): test live Ghostty link resolution directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10041
* test(server): exercise Codex prompts through public assembly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10045
* refactor(shared): remove unused elapsed-time adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10046
* refactor(web): remove unused preview thread reset helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10049
* refactor(desktop): remove test-only error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10047
* refactor(mobile): keep review reset hashing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10048
* test(web): remove AppRoot element order snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10052
* refactor(codex): keep app-server client internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10035
* ci: reject unused Codex client exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10036
* refactor(server): simplify native telemetry error internals by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10057
* refactor(mobile): remove write-only terminal font cache by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10058
* refactor(web): remove obsolete HSL theme generator by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10061
* refactor(mobile): remove obsolete native diff token stream by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10062
* test(server): remove title prompt editorial snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10063
* test(server): remove repeated runtime prompt interpolation cases by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10059
* refactor(web): observe preview tests through the live registry by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10064
* test(server): remove keybinding default assignment snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10065
* refactor(mobile): remove obsolete whole-file review highlighters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10067
* test(server): cover CLI runner detection through command suggestions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10066
* refactor(mobile): remove unused cloud relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10068
* refactor(web): test live keybinding resolvers directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10069
* test(server): cover Grok skill parsing through discovery by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10070
* test(web): remove mocked diff view prop snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10073
* test(web): remove mocked annotation options snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10074
* refactor(web): keep pending action labels private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10075
* refactor(mobile): remove unused cloud pending-status mapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10071
* refactor(web): remove unused model picker hint helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10072
* fix(server): resume checkpointing after git init by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/10078
* feat(web): first-run welcome wizard with agent setup and project import by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5362
* fix(server): keep Homebrew mise shims manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10085
* fix(ssh): report remote package installation failures accurately by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10088
* fix(web): keep bulk thread deletion going after failures by @m-de-graaff in https://github.com/pingdotgg/t3code/pull/4615
* fix(web): scale agent spawn rows with interface font by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10092
* fix(web): prevent sidebar tooltip title clipping by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/10086
* fix(web): keep the composer expanded until the thread can scroll by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9965
* fix(web): preserve original mention text in the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10100
* refactor(mobile): remove unused pairing redaction wrapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10147
* test(web): drop provider banner styling assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10148
* refactor(client-runtime): remove unused relay token waiter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10151
* test(web): drop sidebar artwork styling snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10152
* refactor(ssh): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10144
* ci: reject unused SSH exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10145
* refactor(acp): keep protocol implementation exports private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10165
* fix(shared): validate cloudflared with the version subcommand by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9880
* fix(desktop): separate LAN and Tailscale pairing endpoints by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9882
* fix(server): install pinned runtime when pnpm node lacks npm by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9923
* fix(web): hide sidebar search shortcut on mobile by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9932
* fix(web): align tool disclosure chevrons with expanded state by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9935
* fix(antigravity): distinguish session initialization auth failures by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9919
* fix(cursor): cache successful model discovery between refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9918
* fix(opencode): revert from the first removed assistant message by @maria-rcks in https://github.com/pingdotgg/t3code/pull/…
juliusmarminge added a commit that referenced this pull request Sep 8, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 8, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
saphid pushed a commit to saphid/t3code that referenced this pull request Sep 8, 2026
Adopts the round's main features into the v2 architecture: the pingdotgg#9023
media rework (streamed videos, media-file assets, protocol-relative
links), pingdotgg#9098 shared live-activity row folded into the v2 working and
thinking rows, the pingdotgg#9084/pingdotgg#9078 Claude model catalog for v2 consumers,
a native pingdotgg#9005 OpenCode child-session abort in the v2 adapter, pingdotgg#9013's
landed LegendList patch, and per-environment sidebar provider entries.
For pingdotgg#8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
juliusmarminge added a commit that referenced this pull request Sep 8, 2026
Adopts the round's main features into the v2 architecture: the #9023
media rework (streamed videos, media-file assets, protocol-relative
links), #9098 shared live-activity row folded into the v2 working and
thinking rows, the #9084/#9078 Claude model catalog for v2 consumers,
a native #9005 OpenCode child-session abort in the v2 adapter, #9013's
landed LegendList patch, and per-environment sidebar provider entries.
For #8600 the server-side pieces land, but auto-settle evaluation stays
client-side (reading the new server-owned settings) until the v2
orchestrator grows its own settlement reactor; main's v1-only reactor
and coalescer additions are dropped with the rest of the v1 path.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📱 Native Change Changes the native fingerprint; merging blocks production OTAs until a new store build ships. size:XXL 1,000+ changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant